home *** CD-ROM | disk | FTP | other *** search
Oberon Document | 1994-06-07 | 4.8 KB | 144 lines | [oODC/obnF] |
- Documents.StdDocumentDesc
- Documents.DocumentDesc
- Containers.ViewDesc
- Views.ViewDesc
- Stores.StoreDesc
- Documents.ModelDesc
- Containers.ModelDesc
- Models.ModelDesc
- Stores.ElemDesc
- Stores.StoreDesc
- TextViews.StdViewDesc
- TextViews.ViewDesc
- Containers.ViewDesc
- Views.ViewDesc
- Stores.StoreDesc
- TextModels.StdModelDesc
- TextModels.ModelDesc
- Containers.ModelDesc
- Models.ModelDesc
- Stores.ElemDesc
- Stores.StoreDesc
- TextModels.AttributesDesc
- Stores.StoreDesc
- Geneva
- TextModels.AttributesDesc
- Stores.StoreDesc
- Geneva
- MODULE MacDialogUtils;
- IMPORT
- SYSTEM, MacTypes, MemoryMgr := MacMemoryMgr, ResourceMgr := MacResourceMgr,
- QuickDraw := MacQuickDraw, DialogMgr := MacDialogMgr, WindowMgr := MacWindowMgr,
- ControlMgr := MacControlMgr;
- CONST
- UT = 1;
- HANDLE = 2;
- DITL = 4449544CH;
- ctrlItem = 4;
- btnCtrl = 0;
- chkCtrl = 1;
- radCtrl = 2;
- resCtrl = 3;
- statText = 8;
- editText = 16;
- iconItem = 32;
- picItem = 64;
- TYPE
- DialogItem = RECORD (MacTypes.Data)
- handle: MacTypes.Handle;
- bounds: MacTypes.Rect;
- type: SHORTINT;
- len: CHAR;
- (* data: ARRAY len OF SYSTEM.BYTE *)
- END;
- DialogItemPtr = POINTER TO DialogItem;
- ItemList = RECORD (MacTypes.Data)
- maxIndex: INTEGER;
- items: ARRAY [UT] 1 OF DialogItem
- END;
- ItemListHandle = POINTER [HANDLE] TO ItemList;
- PROCEDURE AppendDITL* (dialog: DialogMgr.DialogPtr; itemListID: INTEGER): INTEGER;
- VAR
- offset: MacTypes.Point;
- maxRect: MacTypes.Rect;
- appendItemList: ItemListHandle;
- item: DialogItemPtr;
- dlgItemList: ItemListHandle;
- firstItem: INTEGER;
- newItems, dataSize, i, err, int: INTEGER;
- ch: ControlMgr.ControlHandle;
- str: MacTypes.Str255;
- BEGIN
- ASSERT(dialog # NIL, 20);
- maxRect := dialog.portRect;
- offset.v := maxRect.bottom; offset.h := 0;
- DEC(maxRect.bottom, 5); DEC(maxRect.right, 5);
- dlgItemList := SYSTEM.VAL(ItemListHandle, dialog.items);
- firstItem := dlgItemList.maxIndex + 2;
- appendItemList := SYSTEM.VAL(ItemListHandle, ResourceMgr.GetResource(DITL, itemListID));
- IF appendItemList = NIL THEN RETURN firstItem END;
- MemoryMgr.HLock(appendItemList);
- newItems := appendItemList.maxIndex + 1;
- item := SYSTEM.VAL(DialogItemPtr, SYSTEM.ADR(appendItemList.items));
- i := 0;
- WHILE i # newItems DO
- QuickDraw.OffsetRect(item.bounds, offset.h, offset.v);
- QuickDraw.UnionRect(item.bounds, maxRect, maxRect);
- dataSize := ORD(item.len);
- CASE item.type MOD 128 OF
- | ctrlItem + btnCtrl, ctrlItem + chkCtrl, ctrlItem + radCtrl:
- SYSTEM.MOVE(SYSTEM.ADR(item.len), SYSTEM.ADR(str), dataSize+1);
- item.handle := ControlMgr.NewControl(dialog, item.bounds, str, TRUE, 0, 0, 1, item.type MOD 4, 0)
- | ctrlItem + resCtrl:
- SYSTEM.GET(SYSTEM.ADR(item.len) + 1, int);
- item.handle := ControlMgr.GetNewControl(int, dialog);
- ch := SYSTEM.VAL(ControlMgr.ControlHandle, item.handle);
- ch.contrlRect := item.bounds
- | statText, editText:
- err := MemoryMgr.PtrToHand(SYSTEM.VAL(MacTypes.Ptr, SYSTEM.ADR(item.len) + 1), item.handle, dataSize)
- | iconItem:
- SYSTEM.GET(SYSTEM.ADR(item.len) + 1, int);
- item.handle := QuickDraw.GetIcon(int);
- | picItem:
- SYSTEM.GET(SYSTEM.ADR(item.len) + 1, int);
- item.handle := QuickDraw.GetPicture(int)
- ELSE
- item.handle := NIL
- END;
- IF ODD(dataSize) THEN INC(dataSize) END;
- item := SYSTEM.VAL(DialogItemPtr, SYSTEM.VAL(LONGINT, item) + dataSize + SIZE(DialogItem));
- INC(i)
- END;
- err := MemoryMgr.PtrAndHand(SYSTEM.VAL(MacTypes.Ptr, SYSTEM.ADR(appendItemList.items)), dlgItemList, MemoryMgr.GetHandleSize(appendItemList) - 2);
- INC(dlgItemList.maxIndex, newItems);
- MemoryMgr.HUnlock(appendItemList);
- ResourceMgr.ReleaseResource(appendItemList);
- INC(maxRect.bottom, 5); INC(maxRect.right, 5);
- WindowMgr.SizeWindow(dialog, maxRect.right, maxRect.bottom, TRUE);
- RETURN firstItem
- END AppendDITL;
- END MacDialogUtils.
- TextControllers.StdCtrlDesc
- TextControllers.ControllerDesc
- Containers.ControllerDesc
- Controllers.ControllerDesc
- Stores.StoreDesc
- TextRulers.StdRulerDesc
- TextRulers.RulerDesc
- Views.ViewDesc
- Stores.StoreDesc
- TextRulers.StdStyleDesc
- TextRulers.StyleDesc
- Models.ModelDesc
- Stores.ElemDesc
- Stores.StoreDesc
- TextRulers.AttributesDesc
- Stores.StoreDesc
- TextModels.AttributesDesc
- Stores.StoreDesc
- Geneva
- Documents.ControllerDesc
- Containers.ControllerDesc
- Controllers.ControllerDesc
- Stores.StoreDesc
-